home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / dtype / MidiDT.lha / MidiDT / Future.readme next >
Text File  |  1997-10-05  |  3KB  |  77 lines

  1. About the midi.datatype future:
  2.  
  3. Preface:
  4.  I am having not much time to spend for programming and I have some
  5.  other projects, too, so, if you are a programmer, I need your help.
  6.  And I do not know all about midi, so I need some help to do the
  7.  final design. If you even want to take over the whole project,
  8.  please contact me.
  9.  
  10.  
  11. What is to do:
  12.  Well, there are still some small improvements to be done like:
  13.  * Send reset before starting playing
  14.  * Make use of some special features of datatypes.library V45
  15.  * Create a prettier control panel
  16.  * etc.
  17.  but I think that the BIG thing should be done first:
  18.  
  19.    To make loading/saving useable and allow the use of subdatatypes,
  20.    there is a need to specify a nice memory representation of midi
  21.    music files.
  22.  
  23.  Having this it will require to write code to load and save midi files
  24.  and the midi player needs to be fully rewritten.
  25.  
  26.  
  27. Memory representation of midi music:
  28.  The most common midi file format "Standard Midi File" (SMF) consists
  29.  of byte streams divided into tracks by something that looks similar
  30.  to an IFF format. These midi streams are good for sequential (serial)
  31.  access and do need very little memory, but they fail miserably when
  32.  trying to be accessed randomly. Random access however is required by
  33.  editors and by players that can skip to a specifyed song location.
  34.  So it should be considered to transform this midi byte stream into
  35.  a tree of structures and arrays to allow easy editing and random
  36.  accessing of it.
  37.  
  38.  
  39. What programs can make use of this memory representation ?
  40.  * Midi editors for loading/saving midi files. It is important that the
  41.    memory representation allows easy editing of the midi stream.
  42.  * Midi file ananlyzers for loading midi files.
  43.  * Midi music generators (for example a drummachine or algorythmic tunes)
  44.    for playing and saving midi files.
  45.  * Programs that print midi melodies on paper for loading.
  46.  * midi.datatype subclasses for loading/saving non-SMF files. Special
  47.    care must be taken to ensure, that all important midi file formats
  48.    (and even those that appear in future) can be converted into this
  49.    memory representation.
  50.  * The internal player of midi.datatype, but external players do not
  51.    need it, since they can make use of the internal player even if they
  52.    have their own GUI.
  53.  
  54.  
  55. What about music modules ?
  56.  One difference between midi music and Protracker like music modules is
  57.  that midi uses synthetic sounds as instruments and modules use sampled
  58.  sounds as instruments being part of the module. If this would be the
  59.  only difference, everything would be fine and converting between them
  60.  would only be a matter of selecting the right instruments.
  61.  
  62.  The instruments of modules are another problem, since many samples that
  63.  are used cannot be found on a midi synthesizer. A further big difference
  64.  is the effect section, which is very different (even between different
  65.  module formats).
  66.  
  67.  And last but not least the way data is stored is totally different. Midi
  68.  uses byte streams with explicit timing information whereas modules use
  69.  a data array, called pattern, with implicit timing information. Explicit
  70.  timing information allows more precise timing and can save memory.
  71.  
  72.  
  73. So can there be a music.datatype combining midi and modules ?
  74.  If somebody has enough time to design and program this, I think yes.
  75.  As an alternative a separate module.datatype could be designed with
  76.  the same interface for playing.
  77.